package org.example.ioc.pro5_ipc_import;

import org.example.ioc.pro5_ipc_import.other.Grape;
import org.springframework.context.annotation.ImportSelector;
import org.springframework.core.type.AnnotationMetadata;

/**
 * 自定义导入选择器    利用选择器按照条件导入类
 * 1. 实现ImportSelector接口
 * 2. 实现selectImports方法，返回需要导入的类的全类名
 * 3. 在配置类上添加@Import注解，指定导入选择器
 * 4. 在配置类上添加@Import注解，指定导入的类
 * */
//一次性按条件导入多个类
public class FruitImportSelector implements ImportSelector {
    @Override
    public String[] selectImports(AnnotationMetadata importingClassMetadata) {
        //可以根据条件，选择需要导入哪些类路径下的jar中导入哪些类
        //根据spring boot的自动配置原理，返回的字符串数组中的类路径下的jar中的类会被自动配置
        //用于spring boot的自动配置：  读取一个jar包中的META-INF/spring.factories文件，获取到其中的配置类
        //return new String[0];
        return new String[]{"org.example.ioc.pro5_ipc_import.other.Apple", Grape.class.getName()};
    }
}
